#pragma once

struct GLFWwindow;

namespace hiveFX
{
	class CGlfwWindow
	{
	public:
		static CGlfwWindow* createWindow(const std::string& vConfigFilePath);

		~CGlfwWindow();

		[[nodiscard]] std::pair<int, int> getExtent() const;

		[[nodiscard]] bool shouldClose() const;

		void swapBuffers() const;

		static void pollEvents();

		static void beginFrame();

		static void endFrame();
		
		static bool wantCaptureMouse();

		static bool wantCaptureKeyboard();

	private:
		CGlfwWindow(GLFWwindow* vWindow, bool vEnableImGui);

		GLFWwindow* m_pWindow;
		bool m_EnableImGui;
	};
}

